"""
函数: 对某一特定功能或者代码块进行封装！在需要时直接调用即可！

定义：
    def 函数名():
        代码块->函数体！
函数的调用：
    函数名()

好处：
    让程序更加简洁！代码更加合理！

函数参数：
    在函数调用的时候传递的一些信息！

    形参： 在函数声明的时候声明的接受信息的变量！
        1:位置参数！ 按照先后顺序传递参数
        2:默认值参数！在函数声明的时候给变量一个默认值！ 如果实参不传递信息，默认值生效！否则，默认值不生效！
        3:动态传参！
            1: *args   接收位置参数的动态传参！形参的值会统一放在元组中！  动态传参参数不固定！想传几个传几个！
            2：**args   接收关键字参数的动态传参！  接收过来的参数存放在字典内！

        顺序: 位置参数 > *args >默认值参数 > **args

    实参： 传递的实际信息！
        1:位置参数！ 按照先后顺序传递参数
        2：关键字参数！按照参数名字进行传值！ 关键字 =
        3：混合参数！ 顺序：位置参数在前！关键字参数在后！
        实参执行的时候，必须敢保证形参有数据！


返回值：函数执行后，返回给调用方的结果！
    return 返回值
return：
    不写return !返回None!
    写return 不写值！返回None!
    return 值   返回一个值
    return 值1,值2,..   返回一个包含所有值的元组！
    
return 终止函数！后方不会执行！


"""

# def fun():
#     print('hello')
#     print('world')
#
# fun()


# def maren(name,message):
#     print(name,message)
#
# maren("LKL","好帅")

def jisuan(a,opt,b):
    if opt == "+":
        print(a+b)
    elif opt == "-":
        print(a-b)
    elif opt == "*":
        print(a*b)
    elif opt == "/":
        print(a/b)
    else:
        print("gun")

jisuan(1,"+",3)


lst = ["123",'456','789','111']
def ff(*arg):
    print(arg)

#*列表名！ 表示把列表拆分成每一项(打散成位置参数)，传给形参！
ff(*lst)

#**字典名！ **在实参位置自动把字典转换成关键字参数传递！